数据转换

对数据进行统计分析时,为了消除量纲和量级的影响,或者为了满足统计方法对数据的要求,经常需要在统计分析之前对数据进行转换。常见的数据转换方法有对数转换、平方根转换、反正弦转换、中心化、标准化和归一化等。对数转换和平方根转换等可以使用第3章列操作部分通过转换已有列得到新列的方法进行计算。本节主要介绍数据标准化和数据归一化。[大谦Excel,dqexcel点com]

数据标准化

【问题描述】

对给定数据进行标准化处理。

【示例9-9】

本例使用的Excel文件的完整路径为“D:/Samples/ch09/04 数据转换/数据转换.xlsx”。该文件打开后如图9-5所示,是一组给定的数据。要求对该数据进行标准化处理。

Document Image

图9-5 转换数据

  • 编写下面的代码:
code.python
import pandas as pd
# 读取Excel文件,使用openpyxl引擎
df = pd.read_excel('D:/Samples/ch09/04 数据转换/数据转换.xlsx', engine='openpyxl', sheet_name=0, nrows=84)
# 获取x列数据
x_data = df['x']
# 标准化处理x列数据
x_norm = (x_data - x_data.mean()) / x_data.std()
# 将标准化后的x数据替换原先的x列数据
df['x'] = x_norm
# 输出修改后的表数据
print(df)

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出标准化以后的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
           x
0  -0.464585
1   1.042823
2  -0.129605
3   0.205374
4   0.707844
..       ...
79 -1.134544
80  0.875334
81  0.372864
82 -0.967054
83 -0.297095
[84 rows x 1 columns]

【知识点扩展】

对给定数据进行标准化转换以后,数据服从标准正态分布。标准化的作用是消除量纲和量级的影响,使表示样本的多个指标具有相同的尺度。标准化的算法是将每个数据减去它们的均值后除以标准差,数据的均值为0,标准差为1。

数据归一化

【问题描述】

将给定数据归一化到0-1范围。

【示例9-10】

本例使用示例9-9的数据,要求将数据归一化到0至1之间。

  • 编写下面的代码:
code.python
import pandas as pd
# 读取Excel文件,引擎为openpyxl
df = pd.read_excel("D:/Samples/ch09/04 数据转换/数据转换.xlsx", engine="openpyxl", sheet_name=0, nrows=84)
# 获取x列数据
x_data = df["x"]
# 计算x最大值和最小值
max_value = x_data.max()
min_value = x_data.min()
# 归一化处理
x_norm = (x_data - min_value) / (max_value - min_value)
# 将归一化后的数据赋值给x列
df["x"] = x_norm
# 输出修改后的表数据
print(df.head())

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,在IDLE Shell窗口输出规划化后的数据。

code.python
>>> == RESTART: D:/Samples/1.py =
         x
0  0.46875
1  0.75000
2  0.53125
3  0.59375
4  0.68750
……

【知识点扩展】

归一化是将所有数据转换到0~1。归一化的算法是将每个数减去数据最小值得到的差除以数据的极差。极差是用数据的最大值减去最小值得到的。